#ifndef GAIA_COMMON_H
#define GAIA_COMMON_H

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <malloc.h>
//#include "gaia_db.h"


/* 用于接收参数的结构体 */
typedef struct hostinfo 
{
  char username[64];
  char passwd[128];
  char host[64];
  char sign[512];
  char task[512];
  char deploy_type[64]; //部署类别
  int port;    //存放主机端口
  int hostid;  //存放主机id
  int taskid;  //存放任务id
} HOST;

#define  CONFIG_FILE "/etc/gaia.conf"
#define  CALLBACK_URL  "vserver.toggle.cn/callback"
#define  GAIA_AES_KEY "*&Eks_@+=!$%^739"

/* 函数功能： 检查主机是否已经存在 
 * 返回值： 存在返回0，不存在返回1 
 */
int gaia_host_is_exits(int hostid);

/* 函数功能：添加主机 
 * 返回值：添加成功返回0，失败返回1
 */
int gaia_add_host(int task_id,char *uri_buf);

/* 函数功能：获取主机信息(CPU、内存、磁盘空间)
 * 返回值：获取成功返回0，失败返回1
 * 参数说明：hostid是host的id号，根据id号，可以从数据库里查询到host的信息，
 *           msg是一个用于存放信息的数组
 */
int gaia_get_host_status(int hostid,char *msg);

/*函数功能：对主机执行操作
 * 返回值：执行成功返回0，失败返回1
 * 参数说明：hostid是host的id号,task_type是任务类型
 */
//int gaia_task(int hostid,char *task_type);
int gaia_task(char *uri_buf);

//int gaia_parse_host_info(const char *uri_buf,struct info *hostinfo );
//HOST *gaia_parse_host_info(const char *uri_buf);

//解析post过来的json数据
int gaia_parse_post_data(int flags,const char *uri,struct hostinfo **hostinfo);

//获取taskid
int gaia_get_taskid(int *taskid);

//获取unixtime
int gaia_get_unixtime(int *unixtime);

//首次写状态值
int gaia_write_task_status_frist(int task_id,char *task_type,int hostid,
                                 unsigned int start_time,int status);

//更新状态值
int gaia_update_task_status(int task_id,int status);

//获取任务状态
int gaia_task_status(int *connect_fd,int task_id);

#endif
